﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using CajaChica.Interfaces;
using CajaChica.Entidades;
namespace CajaChica.Clases
{
    public class clsCentroCosto 
    {
        cajaEntities ce;

        public void Guardar(int id, String descripcion, int amarre1, int amarre2, int grupo)
        {
            ce = new cajaEntities();
            centro_costo cc = new centro_costo
            {
                id = id,
                descripcion = descripcion,
                amarre1 = amarre1,
                amarre2 = amarre2,
                grupo = grupo
            };
            ce.AddTocentro_costo(cc);
            ce.SaveChanges();
        }

        public void GuardarCambios(int id, String descripcion, int amarre1, int amarre2, int grupo)
        {
            ce = new cajaEntities();
            centro_costo cc = ce.centro_costo.FirstOrDefault(
                a => a.id == id);

            cc.descripcion = descripcion;
            cc.amarre1 = amarre1;
            cc.amarre2 = amarre2;
            cc.grupo = grupo;
            ce.SaveChanges();
        }

        public void Eliminar(int id)
        {
            ce = new cajaEntities();
            centro_costo cc = ce.centro_costo.FirstOrDefault(
                a => a.id == id);
            ce.DeleteObject(cc);
            ce.SaveChanges();
        }

        public ArrayList CargarDatosGridView()
        {
            ArrayList listaDatos = new ArrayList();
            ce = new cajaEntities();
            var listaQuery = from cc in ce.centro_costo
                             orderby cc.grupo, cc.id ascending
                             select new 
                             {
                                CODIGO = cc.id,
                                DESCRIPCION =   cc.descripcion,
                                CUENTA_DEBE  = cc.amarre1,
                                CUENTA_HABER = cc.amarre2
                             };
            
            foreach(var datos in listaQuery)
            {
                listaDatos.Add(datos);
            }
            return listaDatos;
        }

        public ArrayList CargarDatosComboBox()
        {
            ArrayList lista = new ArrayList();
            ce = new cajaEntities();

            var query = from c in ce.centro_costo
                        orderby c.grupo, c.descripcion
                        select new
                        {
                            CODIGO = c.id,
                            DESCRIPCION = c.descripcion
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }

            return lista;
        }

        public ArrayList Buscar(int criterio, string cadena)
        {
            ArrayList listaDatos = new ArrayList();
            ce = new cajaEntities();

            if(criterio == 1 )
            {
                var listaQuery = from cc in ce.centro_costo
                                 where cc.id.Equals(cadena)
                                 select new
                                 {
                                     CODIGO = cc.id,
                                     DESCRIPCION = cc.descripcion,
                                     CUENTA_DEBE = cc.amarre1,
                                     CUENTA_HABER = cc.amarre2
                                 };
                foreach (var datos in listaQuery)
                {
                    listaDatos.Add(datos);
                }
            }

            if (criterio == 2)
            {
                var listaQuery = from cc in ce.centro_costo
                                 where cc.descripcion.Contains(cadena)
                                 select new
                                 {
                                     CODIGO = cc.id,
                                     DESCRIPCION = cc.descripcion,
                                     CUENTA_DEBE = cc.amarre1,
                                     CUENTA_HABER = cc.amarre2
                                 };
                foreach (var datos in listaQuery)
                {
                    listaDatos.Add(datos);
                }
            }
            return listaDatos;
        }
    }
}
